package edu.cebanc.spring.biblioteca.controller;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import edu.cebanc.spring.biblioteca.bean.UsuarioBean;
import edu.cebanc.spring.biblioteca.service.UsuariosService;

@Controller
@RequestMapping(value="/usuarios")
public class UsuariosController {
	
	@Autowired
	UsuariosService usuariosService;
	
	@RequestMapping(method=RequestMethod.GET)
	public String getMainView(Model model){
		
		model.addAttribute("usuarios", usuariosService.listadoUsuarios());
		
		return "usuariosMain";
	}
	
	@RequestMapping(value="/formUsuario", method=RequestMethod.GET)
	public String getFormView(Model model){
		
		UsuarioBean ub = new UsuarioBean();
		model.addAttribute("usuario", ub);
		
		return "usuariosForm";
	}
	
	@RequestMapping(method=RequestMethod.POST)
	public String dataUsuario(@Valid UsuarioBean ub, BindingResult result){
		
		if(result.hasErrors()){
			System.out.println(result.toString());
			return "redirect:/usuarios/formUsuario";
		}
		usuariosService.guardarUsuario(ub);
		
		return "redirect:/usuarios";
	}
	
	@RequestMapping(value="/infoUsuario/{id}", method=RequestMethod.GET)
	public String getInfoView(@PathVariable String id, Model model){
		
		model.addAttribute("usuario", usuariosService.cargarUsuario(id));
				
		return "usuariosInfo";
	}
	
	@RequestMapping(value="/editUsuario/{id}", method=RequestMethod.GET)
	public String editUsuario(@PathVariable String id, Model model){
		
		model.addAttribute("usuario", usuariosService.cargarUsuario(id));
		
		return "usuariosForm";
	}
	
	@RequestMapping(value="/deleteUsuario/{id}", method=RequestMethod.GET)
	public String deleteUsuario(@PathVariable String id, Model model){
		
		usuariosService.eliminarUsuario(id);
		
		return "redirect:/usuarios";
	}

}
